Multiprotocol label switching (“MPLS”) provides a mechanism for engineering network traffic patterns in which short labels are assigned to network packets that describe how to forward them through the network. In a MPLS network, a node, switch or router which supports MPLS is generally known as a label switching router (“LSR”) and a LSR at the edge (ingress or egress) of the MPLS network is generally known as a label edge router (“LER”).
In general, as a data frame of a connectionless network layer protocol (e.g., the Internet Protocol (“IP”)) travels from a source node to a destination node it travels from one node to the next through the network. Each node makes an independent forwarding decision for that packet. That is, each node analyzes the data frame's header to determine where to forward the packet next. The forwarding decision is determined by a forwarding table that is present on each node and that is built by network layer routing algorithms running on that node. Therefore each router independently chooses a next hop for the data frame, based on its analysis of the packet's header and the results of running the routing algorithm.
Frame headers contain considerably more information than is needed simply to choose the next hop along the path. Choosing the next hop can therefore be thought of as the combination of two functions. The first function partitions the entire set of possible packets into a set of forwarding equivalence classes (“FECs”). In conventional IP forwarding the FEC is a subnet IP address prefix. Therefore a particular node will typically consider two packets to be in the same FEC if there is some address prefix “X” in that router's routing tables such that “X” is the “longest match” for each packet's destination address. The second maps each FEC to a next hop. Insofar as the forwarding decision is concerned, different packets which get mapped into the same FEC are indistinguishable. All data frames which belong to a particular FEC and which travel from a particular node will follow the same path (or if certain kinds of multi-path routing are in use, they will all follow one of a set of paths associated with the FEC). As the data frame traverses the network, each hop in turn re -examines the packet and matches it to a FEC in order to determine the next hop.
In MPLS, the assignment of a particular data frame to a particular FEC is done just once, as the data frame enters the network. The FEC to which the packet is assigned is encoded as a short fixed length value known as a “label”. When a packet is forwarded to its next hop, the label is sent along with it; that is, the packets are “labelled” before they are forwarded. At subsequent hops, there is no further analysis of the data frame's network layer header. Rather, the label in the frame header is used as an index into a table on the node. The table entry specifies the next hop, and a new label. The old label in the frame header is replaced with the new label, and the data frame is forwarded to its next hop. Thus, in the MPLS forwarding paradigm, once a packet is assigned to a FEC, no further network layer header analysis is done by subsequent routers; all forwarding is driven by the labels.
For reference, the MPLS header is made up of a stack of 32 bit labels. The MPLS “label” is 20 bits long and is the identifier that is locally significant to the LSR. The “experimental bits” field is 3 bits long and is used to determine the quality of service (“QoS”) that is to be applied to the data frame. The “stack” field takes one bit and is used to determine whether there is another label stack entry in the header. And, the time-to-live (“TTL”) field is 8 bits long and is similar to the TTL field carried in the IP header and is used to determine how many hops the frame can traverse before it is dropped. The IP frame is encapsulated in with an MPLS header at the ingress edge of the MPLS network. At the egress edge, the IP frame is restored by removing the MPLS header.
The label distribution protocol (“LDP”) is used to build and maintain MPLS label databases that are used to forward traffic through MPLS networks. The LDP is specified in IETF documents RFC 3036, “LDP Specification”, January 2001, and RFC 3037, “LDP Applicability”, January 2001, which are incorporated herein by reference. As mentioned above, MPLS is a method for forwarding packets that uses short, fixed-length values carried by packets, called labels, to determine packet next hops. A fundamental concept in MPLS is that two LSRs must agree on the meaning of the labels used to forward traffic between and through them. This common understanding is achieved by using a set of procedures (i.e., the LDP) by which one LSR informs another of label bindings it has made. Thus, the LDP is a set of procedures by which one LSR informs another of the meaning of labels used to forward traffic between and through them.
Now, a pseudo-wire (or pseudowire or “PW”) is an emulation of a native service over a packet switched network (“PSN”). The native service may be asynchronous transfer mode (“ATM”), Frame Relay, Ethernet, low-rate time-division multiplexing (“TDM”), or synchronous optical network/synchronous digital hierarchy (“SONET/SDH”), while the PSN may be a MPLS, IP, or Layer 2 tunnelling protocol (“L2TP”) based network. The PW emulates the operation of a “transparent wire” carrying the native service. In other words, a pseudo-wire emulates a point-to-point link, and provides a single service which is perceived by its user as an unshared link or circuit of the chosen service.
In general, a pseudo-wire (“PW”) is a connection between two provider edge (“PE”) devices which connects two attachment circuits (“ACs”). An AC can be a Frame Relay data link connection identifier (“DLCI”), an ATM virtual path identifier/virtual channel identifier (“VPI/VCI”), an Ethernet port, a virtual local area network (“VLAN”), a high-level data link control (“HDLC”) link, a point-to-point protocol (“PPP”) connection on a physical interface, a PPP session from an L2TP tunnel, an MPLS label switched path (“LSP”), etc. During the setup of a PW, the two PEs will be configured or will automatically exchange information about the service to be emulated so that later they know how to process packets coming from the other end. After a PW is set up between two PEs, frames received by one PE from an AC are encapsulated and sent over the PW to the remote PE, where native frames are re-constructed and forwarded over the other AC. The PE devices may be, for example, MPLS switches.
PW extensions to the LDP are described in Internet Engineering Task Force (“IETF”) request for comment (“RFC”) document RFC 4447, “Pseudowire Setup and Maintenance Using the Label Distribution Protocol (LDP)”, April 2006, which is incorporated herein by reference. According to RFC 4447, Layer 2 services (such as Frame Relay, ATM, and Ethernet) can be “emulated” over an MPLS backbone by encapsulating the Layer 2 protocol data units (“PDUs”) and transmitting them over PWs. In other words, PWs are created to carry different types of traffic across a MPLS network, the PW being a point-to-point network connection over MPLS that offers transparency of the Layer 2 service which it transports.
RFC 4447 specifies a protocol for establishing and maintaining PWs, using extensions to the LDP. It defines new type-length-values (“TLVs”), FEC elements, parameters, and codes for LDP, which enable LDP to identify PWs and to signal attributes of PWs. It specifies how a PW endpoint uses these TLVs in LDP to bind a demultiplexor field value (i.e., an MPLS label as described above) to a PW, and how it informs the remote endpoint of the binding. It also specifies procedures for reporting PW status changes, for passing additional information about the PW as needed, and for releasing the bindings.
Consider the following RFC 4447 scenario. Suppose that it is desired to transport Layer 2 PDUs from ingress LSR PE, to egress LSR PE2, across an intervening MPLS-enabled network. Assume that there is an MPLS tunnel from PE1 to PE2. That is, assume that PE1 can cause a packet to be delivered to PE2 by encapsulating the packet in an “MPLS tunnel header” and sending the result to one of its adjacencies. The MPLS tunnel is a MPLS label switched path (“LSP”); thus, putting on an MPLS tunnel encapsulation is a matter of pushing on an MPLS label. Also suppose that a large number of PWs can be carried through a single MPLS tunnel. Thus, it is never necessary to maintain state in the network core for individual PWs. It is not presupposed that the MPLS tunnels are point to point; although the PWs are point to point, the MPLS tunnels may be multipoint to point. It is not presupposed that PE2 will even be able to determine the MPLS tunnel through which a received packet was transmitted. (For example, if the MPLS tunnel is an LSP and penultimate hop popping is used, when the packet arrives at PE2 it will contain no information identifying the tunnel.) When PE2 receives a packet over a PW, it must be able to determine that the packet was in fact received over a PW, and it must be able to associate that packet with a particular PW. PE2 is able to do this by examining the MPLS label that serves as the PW demultiplexor field. This label may by called the “PW label”. When PE1 sends a Layer 2 PDU to PE2, it creates an MPLS packet by adding the PW label to the packet, thus creating the first entry of the label stack. If the PSN tunnel is an MPLS LSP, the PE1 pushes another label (i.e., the tunnel label) onto the packet as the second entry of the label stack. The PW label is not visible again until the MPLS packet reaches PE2. PE2's disposition of the packet is based on the PW label.
Thus, a PW is a point-to-point connection across an MPLS network identified by a stack of two labels. The first label is called the “outer” label. It represents the outer tunnel, or outer LSP. This outer tunnel is needed to transport the packets across the network. Within this outer tunnel, “inner” connections (i.e., PWs) may be multiplexed. Each of these inner connections is identified by a second label, usually called the “inner” label. The outer tunnel is usually signalled (i.e., labels exchanged, etc.) using a protocol such as LDP or the resource reservation protocol-traffic extension (“RSVP-TE”). The inner connection (i.e., the PW) is signalled using LDP in its downstream unsolicited (“DU”) mode (i.e., “LDP-DU”). When LDP-DU mode is engaged, a LSR (e.g., a MPLS switch) can distribute MPLS label bindings to other LSRs that have not explicitly requested them. This label management behaviour is described in RFC 3036.
The MPLS LDP-DU signalling protocol with PW extensions is thus used to establish bidirectional PWs across a MPLS network. For PWs requiring resources, reservations are made independently in each direction. This is accomplished by an exchange of signalling messages between the MPLS switches that are the endpoints of the PW, which triggers the resource reservation. However, this signalling exchange may give rise to the situation where one MPLS switch is able to reserve resources for a PW while the other MPLS switch may fail to reserve resources. In this case, the signalling behaviour is such that the successfully reserved resources are held until the failed PW connection can be established, which may never occur. This can be problematic in that a PW that is unable to be established due to a failure to acquire resources in one direction, may maintain a lock on resources at the opposite end. This is inefficient in that if the locked resources were available, they may have been able to have been used to allow a different PW to be successfully established bi-directionally or to allow another type of connection (e.g., a LSP) competing for these resources to be established. Efficient allocation of such resources becomes most important upon re-establishing links after a network or network element failure or when contention for the same resources exists among different entities in a switch.
A need therefore exists for an improved method and system for optimizing resources for establishing PW connections in a MPLS network. Accordingly, a solution that addresses, at least in part, the above and other shortcomings is desired.